
/*
*Released on 28th June 2008.
*Any violations can be reported at paritosh@wikiocean.net
*What is treated as violations can be found at www.wikiocean.net/ppl1-voilations*
******************************************************************************
* The contents of this file are subject to POOL Public License 1.0 and later.
* POOL Public License is based on Affero GPL v3 and additional conditions.
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the Affero GPL v3 License at http://www.gnu.org/licenses/agpl.html
* You may obtain a copy of the POOL Public License 1.0 or later at www.wikiocean.net/license/ppl.html
* Software distributed under POOL Public License 1.0 is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Initial Developer of the Original Code is Paritosh Pungaliya (C) 2008. All Rights Reserved.
******************************************************************************
* Objective of the additional terms (license)
* 1) Is to extend the software freedom to freedom to work.
* 2) To ensure that knowledge is free from monopoly of agencies.
* 3) To avoid a situation where big corporate or investor can buy out free software groups and companies and then start milking the communities built around it.
* (this trend can be seen how the freedom is curtailed in companies that get Venture Capital funding.)
******************************************************************************
*/

package  database;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;

import logger.PoolLogger;

import dbmanager.DBManager;
import dbmanager.GetIdName;

public class GetResultset 
{
	DBManager database;
	Vector<Object>Condition=new Vector<Object>();
	String tablename;
	GetIdName gid;
	String PL="pl";
	String tableid;
	String LOGICALOPERATOR="logicaloperator";
	PoolLogger pl;
	
	public GetResultset() {
		// logger
		pl = (PoolLogger) PoolLogger.getLogger(this.getClass().getName());
	}
	public void initPool()
	{
		gid= new GetIdName();
		PL = gid.getId(PL);		
	}
	
	public void setdata(Vector<Object>Condition,String tablename)
	{
		this.Condition =Condition;
		this.tablename = tablename;
	}
	
	public String [] getRecordArray()
	{
		try 
		{
			tableid = gid.getId(tablename);
			Vector<Object>MasterField =new Vector<Object>();
			Vector<Object>PLField =new Vector<Object>();
			ResultSet rs =DBManager.getSelect("select fieldname from command where msgtype='"+tablename +"' and process='add'");
			while(rs.next())
			{	
				MasterField.add(rs.getString("fieldname"));
			}
			rs=DBManager.getSelect("select pv,vt from where pid='"+PL+"'mid='"+tablename );
			if(rs.next())
			{	
				String pl =rs.getString("pv");
				if(pl.equals("0"))
					pl =rs.getString("vt");
				else
					pl = gid.getItem(pl);
				ResultSet rs1 =DBManager.getSelect("select fieldname from command where msgtype='"+pl +"' and process='add'");
				while(rs.next())
				{	
					PLField.add(rs1.getString("fieldname"));
				}	
			}
			Vector<Object>MasterCondition =new Vector<Object>();
			Vector<Object>PLcondition =new Vector<Object>();
			for(int i=0;i<Condition.size();i++)
			{
				Hashtable<Object, Object> conditionhash = (Hashtable<Object, Object>) Condition.get(i);
				Enumeration<Object>enumeration = conditionhash.keys();
				while(enumeration.hasMoreElements())
				{
					String key = enumeration.nextElement().toString();
					if(!key.equalsIgnoreCase(LOGICALOPERATOR))
					{
						if(MasterField.contains(key))							
							MasterCondition.add(conditionhash);
						else if(PLField.contains(key))
							PLcondition.add(conditionhash);
					}
				}
			}
			Generatejoin gj =new Generatejoin();
			gj.setDatabase();
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
		
		return null;
	}
	
	
}
